SpatialData class
…
library(Rarr)
library(EBImage)
library(ggplot2)
library(jsonlite)
library(SpatialData)
library(SingleCellExperiment)
ImageArraypath <- system.file("extdata", "blobs", package="SpatialData", mustWork=TRUE)
zarr <- file.path(path, "images", "blobs_image")
za <- read_zarr_array(file.path(zarr, "0"))
md <- fromJSON(file.path(zarr, ".zattrs"))
(ia <- ImageArray(za, md))
## class: ImageArray
## axiis(cyx): 3 512 512
## |-time(0):
## |-space(2): y x
## |-channel(1): c
## channels: 0 1 2
readImage(ia <- readImage(zarr))
## class: ImageArray
## axiis(cyx): 3 512 512
## |-time(0):
## |-space(2): y x
## |-channel(1): c
## channels: 0 1 2
SpatialData(spd <- readSpatialData(path))
## class: SpatialData
## images(1): blobs_image
## labels(1): blobs_labels
## shapes(1): blobs_shapes
## points(1): blobs_points
## table: 3 26
SpatialData objects behave like a list, i.e.,
Elements can be accessed in various (equivalent) ways:
i <- "blobs_image"
element(spd, "images", i)
images(spd)[[i]]
image(spd, i)
spd$images[[i]]
(img <- image(spd))
## class: ImageArray
## axiis(cyx): 3 512 512
## |-time(0):
## |-space(2): y x
## |-channel(1): c
## channels: 0 1 2
(lab <- label(spd))
## class: ImageArray
## axiis(yx): 512 512
## |-time(0):
## |-space(2): y x
## |-channel(0):
## channels:
mtx <- as.array(aperm(img))
plot(Image(mtx/255, dim(mtx), "Color"))
mtx <- as.array(aperm(lab))
plot(Image(mtx, dim(mtx)))
(sce <- aggregateImage(spd))
## class: SingleCellExperiment
## dim: 3 26
## metadata(0):
## assays(1): ''
## rownames: NULL
## rowData names(0):
## colnames(26): 1 2 ... 29 30
## colData names(2): x y
## reducedDimNames(0):
## mainExpName: NULL
## altExpNames(0):
cd <- data.frame(colData(sce), z=assay(sce)[1, ])
ggplot(cd, aes(x, y, col=z)) + geom_point() +
scale_color_viridis_c() + scale_y_reverse()
# utility for image plotting with 'EBImage'
.plot <- \(i, c="Color") {
j <- as.array(aperm(i))
plot(Image(j/max(j), dim(j), c))
}
path <- system.file("extdata", "raccoon", package="SpatialData", mustWork=TRUE)
(spd <- readSpatialData(path))
## class: SpatialData
## images(1): raccoon
## labels(1): segmentation
## shapes(1): circles
## points(0):
## table:
(i <- image(spd))
## class: ImageArray
## axiis(cyx): 3 768 1024
## |-time(0):
## |-space(2): y x
## |-channel(1): c
## channels: 0 1 2
coords(i)
## DataFrame with 1 row and 6 columns
## input.name output.name input.axes
## <character> <character> <list>
## 1 cyx global c:channel:NA,y:space:unit,x:space:unit
## output.axes type data
## <list> <character> <list>
## 1 c:channel:NA,y:space:unit,x:space:unit identity NA
scaleImagej <- scaleImage(i, c(1,1,2))
par(mfrow=c(1,2)); .plot(i); .plot(j)
rotateImagej <- rotateImage(i, 30)
par(mfrow=c(1,2)); .plot(i); .plot(j)
sessionInfo()
## R version 4.3.0 (2023-04-21)
## Platform: aarch64-apple-darwin20 (64-bit)
## Running under: macOS Ventura 13.2.1
##
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.11.0
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: Europe/Zurich
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics utils stats4 methods base
##
## other attached packages:
## [1] SingleCellExperiment_1.22.0 SummarizedExperiment_1.30.0
## [3] Biobase_2.60.0 GenomicRanges_1.52.0
## [5] GenomeInfoDb_1.36.0 IRanges_2.34.0
## [7] S4Vectors_0.38.0 BiocGenerics_0.46.0
## [9] MatrixGenerics_1.12.0 matrixStats_0.63.0
## [11] SpatialData_0.99.0 jsonlite_1.8.4
## [13] ggplot2_3.4.2 EBImage_4.42.0
## [15] Rarr_1.0.0 BiocStyle_2.28.0
##
## loaded via a namespace (and not attached):
## [1] tidyselect_1.2.0 viridisLite_0.4.1 farver_2.1.1
## [4] dplyr_1.1.2 filelock_1.0.2 arrow_11.0.0.3
## [7] R.utils_2.12.2 bitops_1.0-7 fastmap_1.1.1
## [10] RCurl_1.98-1.12 digest_0.6.31 lifecycle_1.0.3
## [13] paws.storage_0.2.0 magrittr_2.0.3 compiler_4.3.0
## [16] rlang_1.1.1 sass_0.4.5 tools_4.3.0
## [19] utf8_1.2.3 yaml_2.3.7 knitr_1.42
## [22] labeling_0.4.2 S4Arrays_1.0.0 htmlwidgets_1.6.2
## [25] bit_4.0.5 curl_5.0.0 here_1.0.1
## [28] reticulate_1.28 DelayedArray_0.25.0 abind_1.4-5
## [31] zellkonverter_1.10.0 withr_2.5.0 purrr_1.0.1
## [34] R.oo_1.25.0 grid_4.3.0 fansi_1.0.4
## [37] grDevices_4.3.0 colorspace_2.1-0 scales_1.2.1
## [40] cli_3.6.1 rmarkdown_2.21 crayon_1.5.2
## [43] generics_0.1.3 rstudioapi_0.14 httr_1.4.5
## [46] cachem_1.0.7 stringr_1.5.0 zlibbioc_1.46.0
## [49] datasets_4.3.0 parallel_4.3.0 assertthat_0.2.1
## [52] BiocManager_1.30.20 XVector_0.40.0 tiff_0.1-11
## [55] basilisk_1.12.0 vctrs_0.6.2 Matrix_1.5-4
## [58] dir.expiry_1.8.0 bookdown_0.33 fftwtools_0.9-11
## [61] bit64_4.0.5 magick_2.7.4 jpeg_0.1-10
## [64] locfit_1.5-9.7 jquerylib_0.1.4 glue_1.6.2
## [67] stringi_1.7.12 gtable_0.3.3 munsell_0.5.0
## [70] tibble_3.2.1 pillar_1.9.0 basilisk.utils_1.12.0
## [73] htmltools_0.5.5 GenomeInfoDbData_1.2.10 R6_2.5.1
## [76] rprojroot_2.0.3 evaluate_0.20 lattice_0.21-8
## [79] highr_0.10 R.methodsS3_1.8.2 png_0.1-8
## [82] paws.common_0.5.6 bslib_0.4.2 Rcpp_1.0.10
## [85] xfun_0.39 pkgconfig_2.0.3